/**
 * Created by zengxm on 12/20/2016.
 */
const fs=require("fs")
const tracer = require('tracer');

Date.prototype.format = function(format){
    var o = {
        "M+" : this.getMonth()+1, //month
        "d+" : this.getDate(), //day
        "h+" : this.getHours(), //hour
        "m+" : this.getMinutes(), //minute
        "s+" : this.getSeconds(), //second
        "q+" : Math.floor((this.getMonth()+3)/3), //quarter
        "S" : this.getMilliseconds() //millisecond
    }

    if(/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    }
    for(var k in o) {
        if(new RegExp("("+ k +")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
        }
    }
    return format;
}

/**
 * 转换成整数
 * @param v     待转换的变量
 * @param dv    默认值（如果v不是有效的数值）
 */
exports.toI=(v,dv)=>{
    const newV = parseInt(v)
    return isNaN(newV)?dv:newV
}

/**
 *
 * @param path
 * @param defaultV
 * @returns {*|{}}
 */
exports.readToJSON=(path, defaultV)=>{
    const json = fs.readFileSync(path);
    try{
        return JSON.parse(json)
    }
    catch (e){
        return defaultV || {}
    }
}

/**
 * 判断文件是否存在
 * @param path
 */
exports.fileExist=(path)=>{
    return fs.existsSync(path)
}

/**
 * 返回统一格式的日志组件
 * @param name
 * @returns {*}
 */
exports.logger=(name)=>{
    const logger=tracer.colorConsole({
        format : "{{timestamp}} ["+name+"] : {{message}}",
        dateformat : "HH:MM:ss.L"
    });
    return logger;
}

/**
 * 对日期进行格式化
 * @param pattern
 * @param d
 */
exports.date=(pattern,d)=>{
    const _d = d || new Date()
    return _d.format(pattern)
}